//字符串_字符串相乘
//https://leetcode.cn/problems/multiply-strings/description/
public class Test {
    public static void main(String[] args) {
        //
    }
}


//这种方法用到很多Java的接口，练习。
//25.4.10完全照抄的老师的……听的一般，但是感觉老师讲的这个思路很清晰，不过，还是要自己实践一下——“做与不做的差别”
class Solution {
    public String multiply(String num1, String num2) {
        //
        //逆序、无进位相乘、进位相加（最后结果）
        //1.准备工作：
        int m = num1.length();
        int n = num2.length();
        char[] n1 = new StringBuffer(num1).reverse().toString().toCharArray();
        char[] n2 = new StringBuffer(num2).reverse().toString().toCharArray();
        int[] tmp = new int[m + n - 1];

        //2.无进位相乘，然后相加
        for(int i  = 0 ; i < m ; i ++){
            for(int j = 0 ; j < n ; j ++){
                tmp[i + j] += (n1[i] - '0') * (n2[j] - '0');
            }
        }

        //3.处理进位：
        int cur = 0, t = 0;
        StringBuffer ret = new StringBuffer();
        while(cur < m + n - 1 || t != 0){
            if(cur < m+n-1) t += tmp[cur++];
            ret.append((char)((char)(t%10)+'0'));
            t /= 10;
        }
        //4.处理前导0
        while(ret.length() > 1 && ret.charAt(ret.length()-1) == '0')
            ret.deleteCharAt(ret.length()-1);

        return ret.reverse().toString();
    }
}